/*
 * @brief
 * @author li yong (DogLee)
 * @email 20162439@qq.com
 * @version 1.0
 * @date 2018-08-03 10:40:20
 */
#ifndef ILOGAPPENDER_H
#define ILOGAPPENDER_H

#include <QObject>
#include "debug.h"

class ILogAppender : public QObject
{
    Q_OBJECT
public:
    ILogAppender();

    virtual ~ILogAppender();

    /**
     * @brief setEnableType 设置输出的消息类型
     * @param type 消息类型
     */
    void setEnableType(QList<QtMsgType> type);

    /**
     * @brief append 增加一个消息到输出源中，具体如何处理该消息，由具体的子类来实现
     * @param message 当前的调试信息
     */
    virtual void append(const DebugMessage& message) = 0;

    /**
     * @brief dump 主动调用dump接口，实现将内部消息立即输出。
     */
    virtual void dump() {}

protected:
    /**
     * @brief messageTypeCode 转换消息类型为消息识别码
     * @param type 消息类型
     * @return 消息识别码
     */
    QString messageTypeCode(QtMsgType type) const;

protected:
    QList<QtMsgType> typeLimit;
};

#endif // ILOGAPPENDER_H
